//检查按位或是否存在尾随零
/*给你一个 正整数 数组 nums 。

你需要检查是否可以从数组中选出 两个或更多 元素，满足这些元素的按位或运算（ OR）结果的二进制表示中 至少 存在一个尾随零。

例如，数字 5 的二进制表示是 "101"，不存在尾随零，而数字 4 的二进制表示是 "100"，存在两个尾随零。

如果可以选择两个或更多元素，其按位或运算结果存在尾随零，返回 true；否则，返回 false 。
*/
class Solution {
public:
    bool hasTrailingZeros(vector<int>& nums) {
        int count = 0;
        for (auto& num : nums) {
            if (num % 2 == 0) {
                count++;
                if (count >= 2)
                    return true;
            }
        }
        return false;
    }
};

//检查字符串是否为数组前缀
/*给你一个字符串 s 和一个字符串数组 words ，请你判断 s 是否为 words 的 前缀字符串 。

字符串 s 要成为 words 的 前缀字符串 ，需要满足：s 可以由 words 中的前 k（k 为 正数 ）个字符串按顺序相连得到，且 k 不超过 words.length 。

如果 s 是 words 的 前缀字符串 ，返回 true ；否则，返回 false 。
*/
class Solution {
public:
    bool isPrefixString(string s, vector<string>& words) {
        int index = 0;
        for (auto& str : words) {
            for (auto& c : str) {
                if (index >= s.size())
                    return false;
                if (c != s[index])
                    return false;
                index++;
            }
            if (index >= s.size())
                return true;
        }
        return false;
    }
};
//公交站间的距离
/*环形公交路线上有 n 个站，按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离，distance[i] 表示编号为 i 的车站和编号为 (i + 1) % n 的车站之间的距离。

环线上的公交车都可以按顺时针和逆时针的方向行驶。

返回乘客从出发点 start 到目的地 destination 之间的最短距离。
*/
class Solution {
public:
    int distanceBetweenBusStops(vector<int>& distance, int start,
                                int destination) {
        int sum = 0;
        for (auto& num : distance) {
            sum += num;
        }
        int i = min(start, destination);
        int j = max(start, destination);
        int count = 0;
        while (i < j) {
            count += distance[i];
            i++;
        }
        return min(count, sum - count);
    }
};